package call_reference

//自己定义函数体 用于把函数当成参数传递 用于调用函数参数
fun main(args: Array<String>) {
    val max = getMax(::add, ::filterMin)
    val number = listOf(1, 2, 3)
    println(number.filter(max))
}

//原有基础上加上100
fun add(x: Int) = x + 100

//判断是否大于102
fun filterMin(x: Int) = x > 102

//传递一个 f函数 传递A返回C。g函数 传递一个B返回一个C。返回的函数传递一个A返回一个C
fun <A, B, C> getMax(f: (A) -> B, g: (B) -> C): (A) -> C {
    return { x -> g(f(x)) }
}
